package main

import (
	"flag"
	"fmt"
	"runtime"
	"time"

	"gitee.com/taotao_today/crontab/crontab/worker"
)

// 配置文件
var confFile string

func initArgs() {
	flag.StringVar(&confFile, "config", "crontab/worker/cmd/worker.json", "指定master配置文件")
	flag.Parse()
}

func initEnv() {
	// 设置线程数为CPU数
	runtime.GOMAXPROCS(runtime.NumCPU())
}

// 1. 从etcd中把job同步到内存中
// 2. 实现调度模块，基于crontab表达式调度多个job
// 3. 实现执行模块，并发的执行多个job
// 4. 对job的分布式锁，防止集群并发
// 5. 将执行日志保存到MongoDB
func main() {
	initEnv()
	initArgs()
	// 加载配置
	err := worker.InitConfig(confFile)
	if err != nil {
		goto ERR
	}

	// 启动调度器
	worker.InitScheduler()

	// 初始化执行器
	worker.InitExecutor()
	// 初始化任务管理器
	err = worker.InitJobMgr()
	if err != nil {
		goto ERR
	}
	for {
		time.Sleep(time.Second)
	}
	return
ERR:
	fmt.Println(err)
}
